Method and system for distributing the recording of a media item

ABSTRACT

A method for recording a media item. A first media controller records a first portion of a media item. The first media controller receives a request to view a second media item. The first media controller directs a second media controller to record a second portion of the media item, and couples the first portion to the second portion.

RELATED APPLICATIONS

This application claims the benefit of provisional patent applicationSer. No. 61/173,628, filed Apr. 29, 2009, the disclosure of which ishereby incorporated herein by reference in its entirety.

FIELD OF THE DISCLOSURE

The technology of the disclosure relates to recording media items, andin particular to recording a media item on multiple media controllersand coupling portions of the media item recorded on each mediacontroller to one another.

BACKGROUND

Devices that provide programs for entertainment are increasinglypopular. Referred to herein generally as media controllers, such devicescan include set-top boxes; digital video recorders; intelligent gamingconsoles such as the Microsoft® Xbox®, Sony® PlayStation®, and Nintendo®GameCube®; media consoles such as the Apple® TV®; personal computers;and the like. Each of these media controllers may receive programmingfrom one or more content providers, including cable content providers,satellite content providers, Internet content providers, and the like,and may provide the programming to a viewer upon request.

A media controller receives a program from a content provider by tuningto a frequency on which the program will be transmitted at a designatedtime. The media controller receives the program content, and eithercauses the presentation of the program to a user on a television, orrecords the program by storing the program content on a storage medium.A tuner that is recording a program is unavailable to tune to anotherchannel and present a program to a user without disrupting the recordingof the program.

Electronic program guides (EPGs) enable a user to relatively easilyselect multiple programs for future recording. This is a popular featurethat enables users to view programs on their schedules, rather than thebroadcasting network's schedule. However, scheduling a large number ofrecordings increases the likelihood that a tuner will not be availableto tune to content upon request from a user. Consequently, it is notuncommon for a user who records a lot of programs to select a program toview from an EPG, only to be told that in order to tune to the desiredchannel, the user must cancel an in-progress recording. The usertherefore faces a choice of not recording a program he would like toview at some point in the future, or not viewing the program he wouldlike to view immediately.

It is increasingly common for a household to have multiple mediacontrollers. Media controllers are also increasingly network capable,and communications between media controllers coupled to a local areanetwork are increasingly common. Frequently, while one media controlleris busy recording a program, one or more other media controllers in thehousehold are idle. Accordingly, when a tuner is unavailable to providea first program to a user because the tuner is occupied recording asecond program, it would be beneficial to distribute the recording ofthe second program to another media controller that is idle, so that thetuner can be available to provide the first program to the user.

SUMMARY

Embodiments disclosed herein distribute the recording of a media itemamong multiple media controllers. The portions of the media itemrecorded on each media controller are coupled together so that the mediaitem may be presented to a user seamlessly.

According to one embodiment, a first media controller receives a firstportion of a media item on a first channel, and stores the first portionin an associated storage. The first media controller receives a requestto tune to a second channel. A second portion of the media item remainsto be recorded. The first media controller determines that a secondmedia controller is available to record the second portion of the mediaitem. The first media controller directs the second media controller torecord the second portion of the media item, and the second mediacontroller records the second portion of the media item. The first mediacontroller couples the first portion to the second portion.

In one embodiment, the second media controller provides the secondportion to the first media controller substantially concurrently as thesecond media controller receives the second portion. The first mediacontroller stores the second portion in association with the firstportion in the associated storage.

As the first media controller begins to receive the second portion, thefirst media controller may determine an end location of the firstportion and a begin location of the second portion. The first mediacontroller may store the second portion in association with the firstportion by appending the second portion, beginning at the begin locationof the second portion, to the end location of the first portion.

The first media controller may determine the end location of the firstportion and the begin location of the second portion by identifyingcontent at the end location and content at the begin location which aretemporally substantially adjacent each other. The first media controllermay determine that content from the first portion and the second portionis temporally substantially adjacent one another by comparing contentfrom the first portion with content from the second portion until amatch of content is determined.

The first media controller may determine that the first portion is in afirst format, and the second portion is in a second format. The firstmedia controller may convert the first portion into the second formatprior to coupling the first portion to the second portion.

In another embodiment, the first media controller couples the firstportion to the second portion by storing in association with the firstportion a reference to the second portion, which may be stored in asecond storage associated with the second media controller.

The first media controller may receive a request from a user to view therecorded media item. In response, the first media controller may accessthe first portion and cause the presentation of the first portion to theuser. The first media controller may detect an end of the first portionand access the reference to the second portion. The first mediacontroller may use the reference to obtain at least a portion of thesecond portion from the second media controller, and may cause thepresentation of the second portion to the user.

Those skilled in the art will appreciate the scope of the presentinvention and realize additional aspects thereof after reading thefollowing detailed description of the preferred embodiments inassociation with the accompanying drawing figures.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

The accompanying drawing figures incorporated in and forming a part ofthis specification illustrate several aspects of the invention, andtogether with the description serve to explain the principles of theinvention.

FIG. 1 illustrates a locale, such as a residence, in which embodimentsmay be practiced;

FIGS. 2A and 2B are message flow diagrams illustrating an exemplarymessage flow and processing associated with distributing the recordingof a media item according to one embodiment;

FIG. 3 is a block diagram of an exemplary recording task descriptor;

FIG. 4 is a block diagram for illustrating a method for determining anend location of the first portion of the media item and a begin locationof the second portion according to one embodiment;

FIGS. 5A and 5B are message flow diagrams illustrating an exemplarymessage flow and processing associated with distributing the recordingof a media item according to another embodiment;

FIG. 6 illustrates an exemplary file header of a file containing thefirst portion of the media item;

FIG. 7 is an exemplary flowchart for playing back the media item whereinthe first portion is stored on a first media controller and the secondportion is stored on a second media controller; and

FIG. 8 illustrates an exemplary media controller according to oneembodiment.

DETAILED DESCRIPTION

The embodiments set forth below represent the necessary information toenable those skilled in the art to practice the invention and illustratethe best mode of practicing such embodiments. Upon reading the followingdescription in light of the accompanying drawing figures, those skilledin the art will understand the concepts of the embodiments and willrecognize applications of these concepts not particularly addressedherein. It should be understood that these concepts and applicationsfall within the scope of the disclosure and the accompanying claims.

FIG. 1 illustrates a locale 10, such as a residence, in which mediacontrollers 12A, 12B, and 12C (generally, media controller 12 or mediacontrollers 12) are located. The media controllers 12 may comprise anydevice capable of providing, presenting, or otherwise causing thedisplay of content upon demand, such as, for example, a set-top box; adigital video recorder; an intelligent gaming console, such as theMicrosoft® Xbox®, Sony® PlayStation®, or Nintendo® GameCube®; a mediaconsole such as the Apple® TV®; and the like. The media controllers 12provide content to one or more users 14 by causing the presentation ofthe content on a respective display device 16A, 16B, 16C (generally,display device 16 or display devices 16). The display device 16 maycomprise any display technology, such as a television, a computermonitor, a projector, or the like. By “causing” or “cause” thepresentation of content it is meant that the media controllers 12generate output streams that are provided to output connections on themedia controllers 12 (not illustrated), which are directed to arespective display device 16, typically via a cable or othersignal-carrying mechanism. While for purposes of illustration, the mediacontrollers 12 and display devices 16 are illustrated as devices thatare separate from one another, a display device 16 may be integral witha media controller 12. For example, a single unit may include both amedia controller 12, such as a digital video recorder, and a displaydevice 16, such as a television. Where a media controller 12 and displaydevice 16 are integral, the signal-carrying mechanism between the twomay not be by a cable, but rather by an internal bus or othersignal-carrying mechanism.

The media controllers 12 receive content from a content provider 18. Thecontent provider 18 may comprise any provider of content, including aservice provider that provides content for a direct or indirect fee, acable operator, a satellite operator, an Internet content provider, andthe like. The content received by the media controllers 12 may be anycontent desirable for presentation, display, or otherwise rendering to auser 14, such as broadcast television, movies, video on demand, music,or the like. Digital content will be referred to herein generally as a“media item,” and a media item can refer to any type of content that isprovided by the content provider 18, such as a particular televisionshow, a particular movie, a song, or the like.

A media item is typically, but not necessarily, provided to the mediacontrollers 12 pursuant to a content package that is defined by aparticular subscription. A subscription may differ among mediacontrollers 12. For example, the media controller 12A may receivebroadcast television in high definition, while the media controllers12B, 12C may receive broadcast television in standard definition. Thecontent provider 18 may provide an electronic program guide (EPG) 20A,20B, 20C (generally, EPG 20) to the media controllers 12 that identifiesmedia items available via the respective content provider 18. The EPG 20typically comprises media item metadata identifying attributes andcharacteristics of particular media items provided by the contentprovider 18.

The media item metadata may be provided to the media controller 12 on acontinual basis on a channel devoted for such purpose, or upon requestby the media controller 12, or at certain predetermined times. The mediaitem metadata can include any data that may be useful or desirable tothe user 14 (typically as determined by the respective content provider18). For example, media item metadata may include a title, adescription, identification of well-known actors, a channel on which themedia item will be provided, a genre, an MPAA rating, a duration, aversion, a time and date the media item will be provided, and the like.Typically, a user 14 accesses an EPG 20 via an input device (notillustrated) such as a remote control, where, upon receipt of a requestvia the remote control, the media controller 12 will cause a display ofinformation from the EPG 20 on the display device 16. Each of the mediacontrollers 12 also preferably has a respective storage 22A, 22B, 22C(generally, storage 22) in which data, such as the EPG 20, userpreferences, and one or more recorded media items, may be stored.

The media controllers 12 are communicatively coupled to one another viaa network 24, such as a local area network. The network 24 may compriseany suitable communication mechanism that enables the media controllers12 to communicate with one another, including, for example, an Ethernetnetwork, Token Ring network, and the like. The media controllers 12access the network 24 via communication links 26, which may comprise anytechnology suitable for accessing the network 24, such as, for example,Wi-Fi®, an Ethernet cable, and the like. The network 24 may use anysuitable message transport protocol to enable message communicationsbetween the media controllers 12, such as, for example, TCP/IP.

The network 24 is communicatively coupled with a content server 28associated with the content provider 18 via a network 30. The network 30may comprise a private network, such as a hybrid fiber coaxial networkprovided by the content provider 18; a public network, such as theInternet; or a combination thereof. The content server 28 includes astorage 32 containing a plurality of media items that may be provided tothe user 14 upon request, or that may be scheduled to be provided to allsubscribers at predetermined times as indicated in the EPG 20. Thecontent server 28 may also be coupled to one or more video feeds (notillustrated) via which the content provider 18 receives media items fromother upstream content providers, such as broadcast networks, and thelike.

The media controllers 12 are preferably able to discover one another onthe network 24 using any suitable device discovery mechanism ortechniques. Device discovery mechanisms are known to those skilled inthe art and will not be described in detail herein. For example, themedia controllers 12 may use the Bonjour® service discovery protocol todiscover the other media controllers 12, but the embodiments are notlimited to any particular device discovery mechanism. Although the mediacontrollers 12 are illustrated as being coupled solely to the network24, it will be appreciated that the media controllers 12 may have otherconnections via which the media controllers 12 receive data. Forexample, the locale 10 may have a cable distribution network (notillustrated) that interfaces with the network 30 and with each of themedia controllers 12. The media controllers 12 may receive media itemsfrom the content server 28 via such cable distribution network, and maycommunicate with each other using the network 24.

The media controllers 12 receive a media item from the content server 28by tuning, via a tuner, to a designated frequency on which the contentserver 28 communicates the media item at a designated time. Whilereceiving the media item, the media controller 12 may process the mediaitem in any of multiple ways, including storing the media item in thestorage 22, causing the presentation of the media item on the displaydevice 16, or both. The tuner receives a single media item at a time;therefore, a tuner that is recording a first media item is unavailableto tune to another channel to either record a second media item or causethe presentation of the second media item to the user 14 without firstceasing the processing of the first media item.

Because the tuner can only receive one media item at a time, a requestby the user 14 to process two media items concurrently can result in atuner conflict. For example, if the tuner is busy recording a firstmedia item, and the user 14 requests the media controller 12 to causethe presentation of a second media item, a tuner conflict arises. Themedia controller 12 typically resolves such a tuner conflict by allowingthe user 14 to cancel the recording of the first media item, or byforegoing watching the second media item.

Media controllers 12 are increasingly manufactured with multiple tunersin order to decrease the likelihood of a tuner conflict. However, it isnot uncommon for a user to desire that multiple media items be recordedsimultaneously, while concurrently viewing another media item. Thus,while multiple tuners diminish the likelihood of a tuner conflict, theyrarely eliminate tuner conflicts. For purposes of illustration andsimplicity, it will be assumed that each of the media controllers 12 hasa single tuner, but it will be apparent that the embodiments disclosedherein are implementable in a media controller 12 with any number oftuners and are not limited to a media controller 12 with a single tuner.

Embodiments disclosed herein enable the user 14 to distribute therecording of a media item among multiple media controllers 12. Forexample, first and second portions of a media item may be recorded onthe media controllers 12A and 12B, respectively. The first and secondportions are coupled together seamlessly. Consequently, the user 14 neednot choose between recording one media item and viewing another.

FIGS. 2A and 2B are message flow diagrams illustrating an exemplarymessage flow and processing associated with distributing the recordingof a media item according to one embodiment. For purposes ofillustration, functionality associated with one or more of the mediacontrollers 12 will be discussed in conjunction with differentprocessing threads. However, the functionality described herein may bedistributed within a particular media controller 12 in any desiredmanner, and is not limited to the particular distribution offunctionality as described herein. Assume that the user 14, using theEPG 20, has scheduled the recording of a media item on the mediacontroller 12A, such as the television program Survivor, at 8:00 PMThursday evening on channel 255. At 8:00 PM, a manager thread 34A sendsa message to a recording thread 36A to begin recording the media item(step 1000). The recording thread 36A tunes to channel 255 and begins torecord the program Survivor (step 1002). Assume that at 8:10, the mediacontroller 12A receives a request from the user 14 to tune to channel256 (step 1004). The media controller 12A determines that a tunerconflict exists, because the tuner associated with the media controller12A cannot both record the media item on channel 255 and simultaneouslyreceive a media item on channel 256.

In response to the request from the user, the manager thread 34A sends arequest to the media controllers 12B and 12C to determine if one or bothof the media controllers 12B, 12C are available to record the remainder,e.g., the second portion, of the media item being provided on channel255 (steps 1006, 1008). The request may include a recording taskdescriptor, as will be discussed in greater detail herein with regard toFIG. 3, identifying one or more attributes of the media item—in thisexample, the program Survivor. Assume both media controllers 12B, 12Care available to record the remainder of the media item. Each of themedia controllers sends a recording task descriptor back to the mediacontroller 12A, along with an indication that the respective mediacontrollers 12B, 12C are available to record the media item (steps 1010,1012).

The recording task descriptor provided to the media controller 12A mayidentify attributes that the second portion of the media item, ifrecorded on the respective media controller 12, will have. For example,assume that the media controller 12B receives, pursuant to thesubscription of the user 14, high definition content, and thusidentifies in the record task descriptor that the second portion of themedia item, if recorded on the media controller 12B, will be at a 1080iresolution. The recording task descriptor may also identify that themedia item will be encoded in a particular digital format, such asMPEG-2 or MPEG-4, and any other attributes useful or necessary for themedia controller 12A to determine how closely the recording of thesecond portion will match the first portion if recorded on therespective media controller 12. Assume that media controller 12Creceives only standard definition content. In this case, the recordingtask descriptor provided by the media controller 12C would indicate thatthe second portion of the media item, if recorded on the mediacontroller 12C, will be in a standard definition 480p resolution.

The manager thread 34A receives the recording task descriptors from themedia controllers 12B, 12C and determines which of the media controllers12B, 12C can record the second portion so that it most closely matchesthe first portion of the media item (step 1014). Assume that the mediacontroller 12A is similar to the media controller 12B and receives highdefinition content from the content server 28. Also assume that thefirst portion of the media item is in a 1080i resolution and is encodedin the same digital format that the media controller 12B would use torecord the second portion. The manager thread 34A therefore selects themedia controller 12B to record the second portion of the media item.

Because the manager thread 34A has determined that a media controller 12is available to record the second portion, the manager thread 34A sendsa message to a receive thread 38A to prepare to receive a data stream ofthe second portion of the media item from the media controller 12B (step1016). The receive thread 38A may initialize data variables, obtainaccess to the first portion of the media item, and perform any otherdesired preliminary processing prior to receiving data from the mediacontroller 12B. When the preliminary processing has been completed, thereceive thread 38A sends a message to the manager thread 34A indicatingthat the receive thread 38A is ready to receive data from the mediacontroller 12B (step 1018).

Once the receive thread 38A is ready to receive data, the manager thread34A sends a message to the media controller 12B directing the mediacontroller 12B to begin recording the second portion of the media item(step 1020). In response, a manager thread 34B directs a recordingthread 36B to begin recording the second portion (step 1022). Therecording thread 36B begins recording the second portion of the mediaitem and stores the second portion in the storage 22B (step 1024). Atransfer thread 40 on the media controller 12B reads the second portionof the media item from the storage 22B substantially concurrently as thesecond portion is being written to the storage 22B by the recordingthread 36B. In one embodiment, the transfer thread 40 reads an initialsegment of data and sends the initial segment to the receive thread 38A(step 1026). The initial segment may comprise a predetermined amount ofdigital content, such as 5 seconds of digital content, 60 frames ofdigital content, or any other desired amount of digital content.

The receive thread 38A receives the initial segment, and determines afirst location in the first portion of the media item and a secondlocation in the second portion of the media item that are temporallysubstantially adjacent to one another. The receive thread 38A sets anend location of the first portion at the first location and a beginlocation of the second portion at the second location (step 1028).Methods for determining the end location of the first portion and thebegin location of the second portion will be described in greater detailherein with reference to FIG. 4. If necessary, if the media controller12B cannot record the second portion in the same digital format as thefirst portion, the receive thread 38A may send a message to a converterthread 42 to convert the first portion to a particular digital formatthat is identical to the digital format of the second portion (step1030). In response, the converter thread 42 may transcode the firstportion to a lower resolution, a different compression format, adifferent bit rate, or the like (step 1032). The converter thread 42sends a message to the receive thread 38A when the converter thread 42is finished converting the first portion (step 1034). The receive thread38A sends a message indicating that the recording on the mediacontroller 12A has been synchronized with the recording on the mediacontroller 12B (step 1036). The media controller 12A sends the recordingthread 36A a message to stop recording the first portion (step 1038).The receive thread 38A begins coupling the first portion to the secondportion by appending the second portion, beginning at the beginlocation, to the first portion, beginning at the end location, in thestorage 22A (step 1040).

The manager thread 34A sends a message to a LiveTV thread 44 to tune tothe requested channel (i.e., channel 256) (step 1042). The LiveTV thread44 causes the tuner to tune to channel 256 and causes the presentationof the media item being provided on channel 256 to the user 14.Simultaneously, and for a period of time while the second media item isbeing received by the media controller 12B, the transfer thread 40continues to read blocks of the second portion from the storage 22B asthe second portion is written to the storage 22B by the recording thread36B, and sends the blocks of the second portion to the receive thread38A. When the final block of the second portion of the media item hasbeen sent to the receive thread 38A, the transfer thread 40 sends amessage to the receive thread 38A that the transfer is complete (step1044). The receive thread 38A can finalize any desired processing withrespect to the recorded media item, such as registering the name and apointer to the recorded media item in a recorded programs list in theEPG 20A, so that the user 14 may view the media item, as desired.

If the media controller 12A receives a request to view the recordedmedia item, the media controller 12A reads the media item from thestorage 22A and causes the presentation of both the first portion andthe second portion in a seamless manner on the display 16A.

While for purposes of illustration the recording of the media item wasdescribed in FIG. 2 as being distributed over two media controllers 12,in other embodiments the recording may be distributed over three or moremedia controllers 12. For example, a first portion may be recorded onthe media controller 12A, a second portion on the media controller 12B,and a third portion on the media controller 12C. This may occur, forexample, when a user 14 directs the media controller 12B to present asecond media item while the media controller 12B is recording the mediaitem requested by the media controller 12A. The media controller 12B mayperform a similar process as described herein with regard to the mediacontroller 12A to resolve the tuner conflict. Additional messaging wouldbe performed to inform the media controller 12A that the mediacontroller 12C will be providing the media controller 12A with a thirdportion of the media item after the media controller 12B indicates thatit is finished recording the second portion. After appending the secondportion to the first portion, the media controller 12A would againreceive an initial segment of the third portion from the mediacontroller 12C and determine an end location of the combined first andsecond portions in the storage 22A, and a begin location of the thirdportion. The media controller 12A then appends the third portion to theend of the second portion as the media controller 12A receives the thirdportion from the media controller 12C.

FIG. 3 is a block diagram of an exemplary recording task descriptor 50.For purposes of illustration, assume that the media controller 12A sendsan availability request message to the media controller 12B, and inreturn the media controller 12B sends a confirmation message to themedia controller 12A indicating that the media controller 12B isavailable. The recording task descriptor 50 may be included in both theavailability request message and the confirmation message. When sentwith the availability request message, the recording task descriptor 50will contain data, as discussed herein, provided by the media controller12A. When sent with the confirmation message, the recording taskdescriptor 50 may contain data provided by the media controller 12B.

The recording task descriptor 50 may contain a task identifier (task ID)field 52 that contains a unique task ID identifying a particularrecording request. The media controller 12A may obtain the task IDthrough conventional mechanisms for generating unique identifiers. Astatus field 54 may be used by the media controller 12B to identify astatus of the media controller 12B. The status field may contain, forexample, a status identifier indicating that a particular mediacontroller 12 is “AVAILABLE” or “UNAVAILABLE” to record the secondportion. A start date/time field 56 may be provided by the mediacontroller 12A and may contain the date and time that the media item isavailable from the content provider 18. A duration field 58 may containthe length of the media item in terms of a unit of time, such asminutes. A channel field 60 may be provided by the media controller 12Ato identify the channel on which the first portion of the media item wasrecorded. The media controller 12B may use the channel field 60 toindicate that the media controller 12B, if selected to record the secondportion of the media item, may use a second channel that differs fromthe channel on which the first portion was recorded. For example, if thefirst portion of the media item was recorded from a high definitionchannel, but the media controller 12B does not receive high definitionchannels, the channel identifier in the channel field 60 may indicate astandard definition channel from which the second portion will berecorded.

A program field 62 may identify a title of the media item, such as“Survivor.” After the media item is recorded, a location field 64 may beused to identify the location of the recorded media item. The mediacontroller 12A may identify a particular quality, or resolution, in aquality field 66. For example, the media controller 12A may indicatethat the first portion was recorded at a 1080i quality. The mediacontroller 12B may use the quality field 66 to identify the highestquality that the media controller 12B can record the second portion. Themedia controller 12A may identify a compression at which the firstportion was recorded in a compression field 68. The media controller 12Bmay identify whether the media controller 12B can record at theidentified compression or not. Similarly, the media controller 12A mayidentify a bit depth at which the first portion was recorded in a bitdepth field 70. The media controller 12B may identify whether the mediacontroller 12B can record at the bit depth or not.

The media controller 12A uses the recording task descriptor 50 sent byother media controllers 12, such as the media controllers 12B, 12C, toselect a media controller 12 that best matches the attributes at whichthe first portion was recorded. For example, if one media controller 12can record the second portion at the same quality, compression, and bitdepth as the first portion, then the media controller 12A need notexecute the step 1032 (FIG. 2) to convert the first portion to match thesecond portion.

FIG. 4 is a block diagram illustrating an exemplary method fordetermining an end location of the first portion of the media item and abegin location of the second portion according to one embodiment. Afirst portion 72 includes a plurality of frames 74 of digital content ofthe media item. A time line 76 illustrates exemplary time offset withinthe media item. For example, a frame 74A begins at the time offset23:12.010 from the beginning of the media item. A segment 78 provided bythe media controller 12B to the media controller 12A (e.g., step 1026,FIG. 2) contains a plurality of frames 80 of digital content of themedia item that have been initially recorded by the media controller12B.

The media controller 12A compares the frames 74 to the frames 80 to findan end location of the first portion and a begin location of the secondportion that are temporally substantially adjacent one another. Themedia controller 12A may prefer to match certain types of frames overother types of frames. For example, some digital encoding technologiesgenerate a stream of data comprising reference frames and delta frames.A reference frame may contain substantially all the data associated witha frame of the content being compressed, while delta frames contain onlydifferences between two frames of the content being compressed. Thus,the media controller 12A may prefer to locate a reference frame in thefirst portion 72 that matches a reference frame in the segment 78.Assume that the media controller 12A has determined that the frame 74Bin the first portion matches the frame 80B in the second portion. Thuslocations 82 and 84 denote locations in the media item that aretemporally substantially adjacent to one another (e.g., approximately ata time offset of 23:12.015). The media controller 12A sets the endlocation of the first portion at the location 82, and the begin locationof the second portion at the location 84. The media controller 12Acouples the first portion 72 to the second portion by appending thesecond portion starting at location 84 to location 82 of the firstportion. Note that the frames 74 of the first portion denoted by thebracket 86 are discarded, as are the frames 80 of the segment 78 denotedby the bracket 88.

FIGS. 5A and 5B are message flow diagrams illustrating an exemplarymessage flow and processing associated with distributing the recordingof a media item according to another embodiment. In this embodiment, themedia controller 12A does not receive the second portion from the mediacontroller 12B until the user 14 requests to view the media item. Steps2000-2014 are similar to corresponding steps 1000-1014 discussed withregard to FIG. 2A, and for purposes of brevity, will not be repeatedherein. At step 2016, the manager thread 34A sends a message to therecording thread 36A to perform any suitable preliminary processing forreceiving a segment of a second portion of the media item from anothermedia controller 12. When the preliminary processing has been completed,the recording thread 36A sends a message to the manager thread 34Aindicating the recording thread 36A is ready to receive data from themedia controller 12B (step 2018).

The manager thread 34A sends a message to the media controller 12B tobegin recording the second portion of the media item (step 2020). Themanager thread 34B directs the recording thread 36B to begin recordingthe second portion (step 2022). The recording thread 36B beginsrecording the second portion of the media item and stores the secondportion in the storage 22B (step 2024). The recording thread 36B sendsan initial segment of the second portion to the recording thread 36A(step 2026). As discussed previously, the initial segment may comprise apredetermined amount of digital content, such as 5 seconds of digitalcontent, 60 frames of digital content, or any other desired amount ofdigital content. The recording thread 36A sets an end location of thefirst portion at the first location and a begin location of the secondportion at the second location (step 2028).

The recording thread 36A sends a message to the recording thread 36Bidentifying the begin location of the second portion (step 2030). Therecording thread 36A also sends a message to the manager thread 34Aindicating that the recording on the media controller 12A has beensynchronized with the recording on the media controller 12B (step 2032).The recording thread 36B ensures that the second portion is stored inthe storage 22B beginning at the begin location (step 2034), and sends areference to the second portion to the recording thread 36A (step 2036).The manager thread 34A sends the recording thread 36A a message to stoprecording the first portion (step 2038). The recording thread 36A stopsrecording the first portion, and couples the first portion to the secondportion by storing the reference from the media controller 12B inassociation with the first portion (step 2040). For example, the mediacontroller 12A may store the reference in the file header of the firstportion. The manager thread 34A sends a message to the LiveTV thread 44to tune to the requested channel (i.e., channel 256) (step 2042). TheLiveTV thread 44 causes the tuner to tune to channel 256 and causes thepresentation of the media item being provided on channel 256 to the user14. When the final block of the second portion of the media item hasbeen sent to the recording thread 36A, the recording thread 36B sends amessage to the manager thread 34A that the second portion has beenrecorded on the second media controller 12B (step 2044).

While for purposes of illustration the recording of the media item wasdescribed in FIGS. 5A and 5B as being distributed over two mediacontrollers 12, as discussed previously, in other embodiments, therecording may be distributed over three or more media controllers 12.For example, a first portion may be recorded on the media controller12A, a second portion on the media controller 12B, and a third portionon the media controller 12C. In this embodiment, the second portion alsoincludes a reference in the file header to the third portion stored inthe storage 22C.

FIG. 6 illustrates an exemplary file header of a file containing thefirst portion. The file header 90 may include a byte count field 92 thatidentifies the total byte count of the first portion. During playback ofthe media item, the media controller 12A may use the byte count todetermine when to begin fetching the second portion from the mediacontroller 12B. A program length field 94 identifies the length of theentire media item in terms of playback, such as the length of the mediaitem in minutes. A length of file field 96 identifies the length of thefirst portion in the same units as the program length field 94 (e.g.,minutes). A reference field 98 contains a reference to the secondportion on the media controller 12B.

FIG. 7 is an exemplary flowchart for playing back the media item whereinthe first portion is stored on the media controller 12A and the secondportion is stored on the media controller 12B. Assume that the user 14requests to view the media item (step 3000). The media controller 12Aaccesses the first portion in the storage 22A (step 3002), and causesthe presentation of the first portion on the display device 16A (step3004). As the media controller 12A causes the presentation of the mediaitem, the media controller 12A may ultimately determine that it isnearing the end of the first portion in the storage 22A (step 3006). Themedia controller 12A accesses the reference from the reference field 98in the header 90 (step 3008) and begins to obtain the second portionfrom the media controller 12B (step 3010). The media controller 12Acauses the presentation of the second portion to the user 14 on thedisplay device 16A (step 3012). Thus, the fact that the media item isdistributed over two media controllers may be completely concealed fromthe user 14.

While for purposes of illustration the recording of the media item wasdescribed in FIG. 3 as being distributed over two media controllers 12,in other embodiments the recording may be distributed over three or moremedia controllers 12. For example, a first portion may be recorded onthe media controller 12A, a second portion on the media controller 12B,and a third portion on the media controller 12C. This may occur, forexample, when a user 14 directs the media controller 12B to present amedia item while the media controller 12B is recording the media itemrequested by the media controller 12A. The media controller 12B mayperform a similar process as described herein with regard to the mediacontroller 12A to resolve the tuner conflict. Additional messaging wouldbe performed to inform the media controller 12A that the mediacontroller 12C will be providing the media controller 12A with a thirdportion of the media item after the media controller 12B indicates it isfinished recording the second portion. After appending the secondportion to the first portion, the media controller 12A would againreceive an initial segment of the third portion from the mediacontroller 12C. The media controller 12A determines an end location ofthe combined first and second portions, and a begin location of thethird portion that was provided by the media controller 12C, so that thethird portion can be appended to the combined first and second portions.

FIG. 8 illustrates an exemplary media controller 12 according to oneembodiment. The media controller 12 may, as discussed previously,comprise a set-top box; a digital video recorder; an intelligent gamingconsole, such as the Microsoft® Xbox®, Sony® PlayStation®, or Nintendo®GameCube®; a media console such as the Apple® TV®; a personal computer;or the like. In addition to components discussed previously herein, theexemplary media controller 12 may also include a central processing unit100, a system memory 102, and a system bus 104. The system bus 104provides an interface for system components including, but not limitedto, the system memory 102 and the central processing unit 100. Thecentral processing unit 100 can be any of various commercially availableor proprietary processors. Dual microprocessors and othermulti-processor architectures may also be employed as the centralprocessing unit 100.

The system bus 104 can be any of several types of bus structures thatmay further interconnect to a memory bus (with or without a memorycontroller), a peripheral bus, and a local bus using any of a variety ofcommercially available bus architectures. The system memory 102 caninclude non-volatile memory 106 (e.g., read only memory (ROM), erasableprogrammable read only memory (EPROM), electrically erasableprogrammable read only memory (EEPROM), etc.) and/or volatile memory 108(e.g., random access memory (RAM)). A basic input/output system (BIOS)110 can be stored in the non-volatile memory 106, which can include thebasic routines that help to transfer information between elements withinthe media controller 12. The volatile memory 108 can also include ahigh-speed RAM such as static RAM for caching data.

The media controller 12 may further include the storage 22, which maycomprise, for example, an internal hard disk drive (HDD) (e.g., enhancedintegrated drive electronics (EIDE) or serial advanced technologyattachment (SATA)) for storage. The media controller 12 may furtherinclude an optical disk drive 112 (e.g., for reading a compact disk orDVD 114). The drives and associated computer-readable media providenon-volatile storage of data, data structures, computer-executableinstructions, and so forth. For the media controller 12, the drives andmedia accommodate the storage of any data in a suitable digital format.Although the description of computer-readable media above refers to anHDD and optical media such as a CD-ROM or DVD, it should be appreciatedby those skilled in the art that other types of media which are readableby a computer, such as Zip disks, magnetic cassettes, flash memorycards, cartridges, and the like, may also be used in the exemplaryoperating environment, and further, any such media may containcomputer-executable instructions for performing novel methods of thedisclosed architecture.

A number of program modules can be stored in the drives and volatilememory 108, including an operating system 116 and one or more programmodules 118, which implement the functionality described herein,including, for example, functionality associated with the manager thread34, the recording thread 36, the receive thread 38, the transfer thread40, the converter thread 42, and the LiveTV thread 44. It is to beappreciated that the embodiments can be implemented with variouscommercially available operating systems or combinations of operatingsystems. All or a portion of the embodiments may be implemented as acomputer program product, such as a computer-usable medium having acomputer-readable program code embodied therein. The computer-readableprogram code can include software instructions for implementing thefunctionality of embodiments described herein. The central processingunit 100, in conjunction with the program modules 118 in the volatilememory 108, may serve as a control system for the media controller 12that is adapted to implement the functionality described herein.

A user may be able to enter commands and information into the mediacontroller 12 through one or more wired or wireless input devices, forexample, a keyboard and a pointing device, such as a mouse (notillustrated). Other input devices (not illustrated) may include amicrophone, an infrared (IR) remote control, a joystick, a game pad, astylus pen, a touch screen, or the like. These and other input devicesare often connected to the central processing unit 100 through an inputdevice interface 120 that is coupled to the system bus 104 but can beconnected by other interfaces such as a parallel port, an IEEE 1394serial port, a game port, a universal serial bus (USB) port, an IRinterface, etc.

The media controller 12 may drive a separate or integral display device16, which may also be connected to the system bus 104 via an interface,such as a video output port 122. The media controller 12 operates in anetworked environment using a wired and/or wireless networkcommunications interface 124. The communications interface 124 canfacilitate wired and/or wireless communications to the network 24 (FIG.1).

The media controller 12 may be operable to communicate with any wirelessdevices or entities operatively disposed in wireless communication, forexample, a printer, a scanner, or a desktop and/or portable computer,via wireless technologies, such as Wi-Fi® and Bluetooth®, for example.

Those skilled in the art will recognize improvements and modificationsto the preferred embodiments of the present invention. All suchimprovements and modifications are considered within the scope of theconcepts disclosed herein and the claims that follow.

1. A method for recording a media item, comprising: receiving, on afirst media controller, a first portion of a media item, wherein themedia item comprises digital content; storing the first portion;directing a second media controller to record a second portion of themedia item; and coupling the first portion to the second portion.
 2. Themethod of claim 1, wherein the first media controller continues toreceive the first portion of the media item and store the first portionof the media item for a period of time after directing the second mediacontroller to record the second portion of the media item.
 3. The methodof claim 1, wherein coupling the first portion to the second portionfurther comprises: receiving the second portion from the second mediacontroller; and storing the first portion and the second portion inassociation with one another in a file on the first media controller. 4.The method of claim 3, wherein receiving the second portion from thesecond media controller further comprises receiving the second portionfrom the second media controller substantially concurrently as thesecond media controller receives the second portion from a contentprovider.
 5. The method of claim 3, wherein storing the first portionand the second portion in association with one another in the filefurther comprises: determining an end location of the first portion;determining a begin location of the second portion; and storing thebegin location of the second portion adjacent the end location of thefirst portion in the file, wherein the begin location and the endlocation comprise locations in the media item that are temporallysubstantially adjacent one another.
 6. The method of claim 5, whereindetermining the end location of the first portion and determining thebegin location of the second portion further comprises: receiving aninitial segment of the second portion from the second media controller;identifying a first data location in the initial segment and a seconddata location in the first portion wherein digital content at the firstdata location is temporally substantially adjacent digital content atthe second data location; setting the begin location at the first datalocation; and setting the end location at the second data location. 7.The method of claim 1, wherein receiving the first portion of the mediaitem further comprises receiving the first portion of the media item ona first channel, further comprising: receiving input from a user to viewa second media item on a second channel; and wherein directing thesecond media controller to record the second portion of the media itemis in response to the input from the user.
 8. The method of claim 7,further comprising causing the presentation of the second media item onthe second channel to the user, while the second media controller isrecording the second portion of the media item.
 9. The method of claim1, further comprising: determining that the first portion is in a firstformat; determining that the second portion is in a second format thatis different from the first format; and converting the first portioninto the second format.
 10. The method of claim 1, further comprising:determining that the first portion is in a first format; determiningthat the second portion is in a second format that is different from thefirst format; and converting the second portion into the first format.11. The method of claim 1, wherein coupling the first portion to thesecond portion further comprises: storing, in association with the firstportion on the first media controller, a reference to the second portionon the second media controller.
 12. The method of claim 11, furthercomprising: receiving input from a user to view the media item; andcausing the presentation of at least a portion of the first portion andat least a portion of the second portion to the user.
 13. The method ofclaim 12, wherein causing the presentation of the at least the portionof the first portion and the at least the portion of the second portionto the user further comprises: determining an end of the first portion;accessing the reference to the second portion; obtaining the at leastthe portion of the second portion from the second media controller; andcausing the presentation of the at least the portion of the secondportion to the user.
 14. A media controller comprising: a communicationsinterface adapted to communicate with a network; and a control systemcomprising a processor, the control system coupled to the communicationsinterface and adapted to: receive a first portion of a media item,wherein the media item comprises digital content; store the firstportion; direct a second media controller to record a second portion ofthe media item; and couple the first portion to the second portion. 15.The media controller of claim 14, wherein to couple the first portion tothe second portion the control system is further adapted to: receive thesecond portion from the second media controller; and store the firstportion and the second portion in association with one another in a fileon the media controller.
 16. The media controller of claim 15, whereinto store the first portion and the second portion in association withone another in the file the control system is further adapted to:determine an end location of the first portion; determine a beginlocation of the second portion; and store the begin location of thesecond portion adjacent the end location of the first portion in thefile, wherein the begin location and the end location comprise locationsin the media item that are temporally substantially adjacent oneanother.
 17. The media controller of claim 14, wherein the controlsystem is further adapted to: determine that the first portion is in afirst format; determine that the second portion is in a second formatthat is different from the first format; and convert the first portioninto the second format.
 18. A computer program product, comprising acomputer-usable medium having a computer-readable program code embodiedtherein, the computer-readable program code adapted to be executed on aprocessor to implement a method for recording a media item, the methodcomprising: receiving, on a first media controller, a first portion of amedia item, wherein the media item comprises digital content; storingthe first portion; directing a second media controller to record asecond portion of the media item; and coupling the first portion to thesecond portion.
 19. The computer program product of claim 18, whereinthe method further comprises: receiving the second portion from thesecond media controller; and storing the first portion and the secondportion in association with one another in a file on the first mediacontroller.
 20. The computer program product of claim 19, whereinstoring the first portion and the second portion in association with oneanother in the file further comprises: determining an end location ofthe first portion; determining a begin location of the second portion;and storing the begin location of the second portion adjacent the endlocation of the first portion in the file, wherein the begin locationand the end location comprise locations in the media item that aretemporally substantially adjacent one another.